package elicecn.cellnum;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileWriter;
import java.io.IOException;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class Converter {
	// 文件名、号段
	public static void convert(String fileIn, String prefix)
			throws FileNotFoundException, IOException {
		FileWriter out = new FileWriter(new File(fileIn + ".csv"));

		HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(fileIn));
		HSSFSheet sheet = wb.getSheetAt(0);
		int rows = sheet.getPhysicalNumberOfRows();
		for (int i = 1; i < rows; i++) {
			HSSFRow row = sheet.getRow(i);
			// 区域
			String area = getStringValue(row.getCell(0))
					+ getStringValue(row.getCell(1));
			if (area.indexOf("本张表") != -1) {
				break;
			}
			// 区号
			String areaCode = getStringValue(row.getCell(2));
			// 号段0-9
			for (int j = 3; j < 3 + 10; j++) {
				String val = getStringValue(row.getCell(j));
				if (val.length() > 0) {
					String[] vals = val.split("、");
					for (int k = 0; k < vals.length; k++) {
						if (vals[k].length() == 3) {
							String min = prefix + (j - 3) + vals[k] + "0000";
							String max = prefix + (j - 3) + vals[k] + "9999";
							out.write((i + 1) + "," + area + "," + areaCode
									+ "," + min + "," + max + "\r\n");
						} else if (vals[k].length() == 7) {
							String[] v = vals[k].split("-");
							String min = prefix + (j - 3) + v[0] + "0000";
							String max = prefix + (j - 3) + v[1] + "9999";
							out.write((i + 1) + "," + area + "," + areaCode
									+ "," + min + "," + max + "\r\n");
						} else {
							System.out.println(i + "/" + j + "/" + vals[k]);
						}
					}
				}
			}
		}
		out.close();
	}

	public static String getStringValue(HSSFCell cell) {
		String value = "";
		if (cell != null && cell.getCellType() == HSSFCell.CELL_TYPE_STRING) {
			value = cell.getStringCellValue();
		}
		return value;
	}

	public static int getNumericValue(HSSFCell cell) {
		Double value = 0d;
		if (cell != null && cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC) {
			value = cell.getNumericCellValue();
		}
		return value.intValue();
	}

	public static void main(String[] args) throws FileNotFoundException,
			IOException {
		convert("D:/附件2[1].中国联通移动用户号码汇总表2011年第三版/附件5：中国联通GSM网130号码汇总表2011年第三批.xls",
				"130");
		convert("D:/附件2[1].中国联通移动用户号码汇总表2011年第三版/附件6：中国联通GSM网131号码汇总表2011年第三批.xls",
				"131");
		convert("D:/附件2[1].中国联通移动用户号码汇总表2011年第三版/附件7：中国联通GSM网132号码汇总表2011年第三批.xls",
				"132");
		convert("D:/附件2[1].中国联通移动用户号码汇总表2011年第三版/附件8：中国联通GSM网145号码汇总表2011年第三批.xls",
				"145");
		convert("D:/附件2[1].中国联通移动用户号码汇总表2011年第三版/附件9：中国联通GSM网155号码汇总表2011年第三批.xls",
				"155");
		convert("D:/附件2[1].中国联通移动用户号码汇总表2011年第三版/附件10：中国联通GSM网156号码汇总表2011年第三批.xls",
				"156");
		convert("D:/附件2[1].中国联通移动用户号码汇总表2011年第三版/附件11：中国联通GSM网186号码汇总表2011年第三批.xls",
				"186");
	}
}
